package com.cmc.cloud.cmclink.doc.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cmc.cloud.cmclink.doc.api.document.emums.CargoTypeEnum;
import com.cmc.cloud.cmclink.doc.api.document.emums.SubCargoTypeEnum;
import com.cmes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;

import java.math.BigDecimal;

/**
 * 订舱货物信息 DO
 *
 * @author 陈正
 */
@TableName("doc_so_cargo")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SoCargoDO extends BaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 外键
     */
    private Long soId;
    /**
     * 货类
     */
    private String cargoType;
    /**
     * HS Code
     */
    private String hsCode;
    /**
     * 英文品名
     */
    private String commodityEn;
    /**
     * 中文品名
     */
    private String commodityCn;
    /**
     * 货类子类 如果货类是DRY ，这里就需要再选择子类 是不是液袋货FLEXI、半开门ODO，如果都不是则为空
     */
    private String subCargoType;
    /**
     * 预估毛重（kgs）
     */
    private BigDecimal grossWeight;
    /**
     * 温度（℃） 温度范围在-25℃至25℃ 之间。
     */
    private String temperature;
    /**
     * 通风度 开度（% Open，范围0~100%）；风量（CHM，单位：m³/h，范围0~999）
     */
    private String vantilation;
    /**
     * 温度类型 摄氏度（°C）华氏度（°F）
     */
    private String temperatureUnit;
    /**
     * unno
     */
    private String unNo;
    /**
     * imoclass
     */
    private String imoClass;
    /**
     * 闪点特种货带过来的
     */
    private String flashPoint;
    /**
     * 包装组别三个选项：Ⅰ、Ⅱ、Ⅲ
     */
    private String packingGroup;
    /**
     * 唛头
     */
    private String marks;
    /**
     * 货物件数
     */
    private Integer quantity;

    /**
     * 货物尺寸
     */
    private BigDecimal measurement;

    /**
     * 包装代码
     */
    private String packageCode;
    /**
     * 包装描述
     */
    private String packageDesc;

    public static boolean checkSpecialCargo(SoCargoDO soCargoDO) {
        String cargoType = soCargoDO.getCargoType();
        String subCargoType = soCargoDO.getSubCargoType();
        if (CargoTypeEnum.AK.getValue().equals(cargoType) || CargoTypeEnum.RD.getValue().equals(cargoType)
                || CargoTypeEnum.DG.getValue().equals(cargoType)) {
            return true;
        }

        return CargoTypeEnum.DRY.getValue().equals(cargoType) && (SubCargoTypeEnum.FLEXI.getValue().equals(subCargoType)
                || SubCargoTypeEnum.ODO.getValue().equals(subCargoType));
    }

}
